package com.itheima.springboot_24_mq.service.impl.rabbitmq.direct.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//@Configuration //这也是为了让springboot可以自动加载这个配置类,成为bean对象
public class RabbitConfigDirect {
    @Bean
    public Queue directQueue(){//这是一个队列对象
        return new Queue("directQueue",true,true,true);
        //directQueue 表明队列名称
        //是否持久化;本次连接mq是否是专用连接,如果true,连接断开,队列删除;是否会在没人生产者和消费者用时自动删除该队列
    }
    @Bean
    public DirectExchange directExchange(){ //这是一个交换机,用于队列连接队列服务;一个交换机可以为多个队列提供绑定服务,只是每次绑定后各自绑定行为的名字不要重复
        return new DirectExchange("directExchange");
    }
    @Bean
    public Binding binding(){ //这是一个绑定对象=directExchange+directQueue
        return BindingBuilder.bind(directQueue()).to(directExchange()).with("direct");
        //direct这是绑定名
    }
}
